REM *********************** REM *** Dateiverwaltung *** REM *********************** REM *** MaxiDAT Ver2.02 *** REM *** written by *** REM *** Christoph Hust *** REM *** in *** REM *** Februar 1989 *** REM *********************** REM ********************************* REM *** H a u p t p r o g r a m m *** REM ********************************* SCREEN 1,640,400,2,2 WINDOW 2," * * * * * M a x i D A T V 2 . 0 2 * * * * *",,16,1 WIDTH 78 ON BREAK GOSUB Ende BREAK ON ON ERROR GOTO Fehler INPUT "Drucker vorhanden (J/N) ";D$ IF LEFT$(UCASE$(D$),1)="J" THEN Drucker=1 END IF Version$="Ver. 2.02, 02. 3. 1989" Drive$="DF0:" Pfad$="MaxiDAT/Daten/" PALETTE 0,1,1,1 PALETTE 1,0,0,0 PALETTE 2,1,0,0 PALETTE 3,0,0.5,1 IF Drucker=1 THEN LPRINT END IF DIM Laenge(11),Bezeichnung$(11),In$(11),Ein$(11) MENU 1,0,1,"Projekt " MENU 1,1,1,"Datei einrichten " MENU 1,2,1,"Daten eingeben " MENU 1,3,1,"Datei benutzen " MENU 1,4,1,"Neustart " MENU 1,5,0,"-----------------" MENU 1,6,1,"Ende " MENU 2,0,Drucker,"Drucker " MENU 2,1,1,"Alles ausdrucken MIT " MENU 2,2,1,"Alles ausdrucken OHNE " MENU 2,3,1,"Auswahl ausdrucken " MENU 3,0,1,"Disk " MENU 3,1,1,"Momentanes Directory ändern " MENU 3,2,1,"Diskettenlaufwerk ändern " MENU 3,3,1,"Inhalt anzeigen " MENU 3,4,1,"Datei löschen " MENU 4,0,1,"Grafik " MENU 4,1,1,"Datei anlegen " MENU 4,2,1,"Grafik zeichnen " MENU 5,0,1,"Infos " MENU 5,1,1,"Programminfo " Hauptprogramm: ON MENU GOSUB Men MENU ON WHILE 1 MENU ON CLS COLOR 1 PRINT " Dateiverwaltung AMIGA" PRINT " -----------------------" PRINT PRINT " Version : ";Version$ PRINT DATUM dtm$ PRINT " Heutiges Datum : ";dtm$ PRINT " Uhrzeit : ";TIME$ dummy$=INKEY$ SLEEP dummy$=INKEY$ SLEEP dummy$=INKEY$ WEND REM ********************************************************* REM *** Dieses Unterprogramm wertet die MENU-Funktion aus *** REM *** und verzweigt dann zu den ausgewählten Funktionen *** REM ********************************************************* Men: Titel=MENU(0) Punkt=MENU(1) IF Titel=1 THEN IF Punkt=1 THEN GOSUB Einrichten END IF IF Punkt=2 THEN GOSUB Eingabe END IF IF Punkt=3 THEN GOSUB Benutzen END IF IF Punkt=4 THEN GOSUB Loeschen END IF IF Punkt=6 THEN GOSUB Ende END IF END IF IF Titel=2 THEN IF Punkt=1 THEN GOSUB DruckeAlles END IF IF Punkt=2 THEN GOSUB DruckeAllesOHNE END IF IF Punkt=3 THEN GOSUB DruckeAuswahl END IF END IF IF Titel=3 THEN IF Punkt=1 THEN GOSUB ChangeDir END IF IF Punkt=2 THEN GOSUB ChangeDrive END IF IF Punkt=3 THEN GOSUB ZeigeDir END IF IF Punkt=4 THEN GOSUB DeleteFile END IF END IF IF Titel=4 THEN IF Punkt=1 THEN GOSUB GrafikdateiAnlegen END IF IF Punkt=2 THEN GOSUB Zeichnen END IF END IF IF Titel=5 THEN GOSUB ProgrammInfo END IF RETURN REM ******************************************** REM *** Hier beginnen die Programmfunktionen *** REM ******************************************** Einrichten: WHILE Jn$<>"J" Gesamtlaenge = 0 CLS MENU OFF PRINT :PRINT FOR I=1 TO 11 LOCATE I+2,1 PRINT USING "##";I COLOR 1,2 LOCATE 1,1 PRINT "BITTE BEZEICHNUNG EINGEBEN. * = Ende. " COLOR 1,0 LOCATE I+2,4 PRINT Bezeichnung$(I); LOCATE I+2,4 LINE INPUT NeueBezeichnung$ NeueBezeichnung$=LEFT$(NeueBezeichnung$,40) IF NeueBezeichnung$<>"" THEN Bezeichnung$(I)=NeueBezeichnung$ END IF BeLaenge=LEN(Bezeichnung$(I)) IF BeLaenge>Maxbezlaenge THEN Maxbezlaenge=BeLaenge END IF LOCATE I+2,4 PRINT Bezeichnung$(I) PRINT STRING$(20," ") COLOR 1,2 LOCATE 1,1 PRINT "BITTE MAXIMALE LÄNGE DER EINGABE EINGEBEN." COLOR 1,0 LOCATE I+2,42 PRINT Laenge(I) LOCATE I+2,42 LINE INPUT Laenge$ NeueLaenge=INT(VAL(Laenge$)) IF NeueLaenge<>0 THEN Laenge(I)=NeueLaenge END IF Fertig=0 IF Bezeichnung$(I)="*" THEN Anzmsk=I Fertig=1 END IF IF Laenge(I)<=0 OR Laenge(I)>50 THEN Laenge(I)=45 END IF IF Fertig THEN I=16 END IF NEXT I Anzmsk=Anzmsk-1 Jn$="" LOCATE 1,1 PRINT "SIND DIESE EINGABEN RICHTIG (J für JA, N für NEIN) ?"; LINE INPUT "";Jn$ Jn$=LEFT$(UCASE$(Jn$),1) WEND Jn$="" ' fuer naechsten Aufruf loeschen CLS LOCATE 1,1 PRINT "Bitte geben Sie den Namen für die neue Datei ein !" LINE INPUT Datinfnam$ Datinfnam$="Daten/"+Datinfnam$+".INFOS" OPEN Datinfnam$ FOR OUTPUT AS #2 WRITE #2,Maxbezlaenge WRITE #2,Anzmsk WRITE #2,1 ' Satznummer FOR I=1 TO Anzmsk WRITE #2,Bezeichnung$(I) WRITE #2,Laenge(I) NEXT I CLOSE #2 RETURN Eingabe: CLS LINE INPUT "Name der Datei ? ";Datnam$ Datinfnam$=Drive$+Pfad$+Datnam$+".INFOS" Datnam$=Drive$+Pfad$+Datnam$+".DATEN" GOSUB LeseInfos Satz=Satznummer OPEN "r",#1,Datnam$,550 FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11) WHILE Jn2$<>"N" GOSUB Eing FOR I=1 TO 11 LSET In$(I)=Ein$(I) Ein$(I)="" NEXT I PUT #1,Satz Satz=Satz+1 LOCATE 20,1 Jn2$="" INPUT "Weiteren Datensatz eingeben ";Jn2$ Jn2$=LEFT$(UCASE$(Jn2$),1) WEND Jn2$="" CLOSE #1 OPEN Datinfnam$ FOR OUTPUT AS #2 WRITE #2,Maxbezlaenge WRITE #2,Anzmsk WRITE #2,Satz FOR I=1 TO Anzmsk WRITE #2,Bezeichnung$(I) WRITE #2,Laenge(I) NEXT I CLOSE #2 RETURN Benutzen: CLS LINE INPUT "Name der Datei ? ";Datnam$ Datinfnam$=Drive$+Pfad$+Datnam$+".INFOS" Datnam$=Drive$+Pfad$+Datnam$+".DATEN" GOSUB LeseInfos Msatz=Satznummer-1 OPEN "r",#1,Datnam$,550 FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11) Satz=1 WHILE Co$<>"Q" CLS Co$="" PRINT "Aktuelle Datei : ";Datnam$,"Datensatz : ";Satz PRINT "***---------------------===MaxiDAT - Befehle===-------------------------***" PRINT "<+> : Nächster Datensatz <-> : Letzter Datensatz : Spring zu Satz" PRINT " : Suche Daten : Kurze Info : Satz editieren" PRINT " : Lösche Datensatz : Satz ausdrucken : Hauptmenü" PRINT "***---------------------=======================-------------------------***" PRINT GET #1,Satz FOR I=1 TO Anzmsk COLOR 3 PRINT Bezeichnung$(I);":" COLOR 2 LOCATE I+7,Maxbezlaenge+4 PRINT In$(I) NEXT I COLOR 1 WHILE Co$<>"+" AND Co$<>"-" AND Co$<>"G" AND Co$<>"S" AND Co$<>"R" AND Co$<>"L" AND Co$<>"E" AND Co$<>"D" AND Co$<>"Q" AND Co$<>CHR$(139) Co$=UCASE$(INKEY$) WEND IF Co$=CHR$(139) THEN REM 139 ist der ASCII-Code der HELP-Taste CLS PRINT "Bedienungsinfos für den Datei-Lesen-Teil von MaxiDAT" PRINT PRINT PRINT "<+> - Der numerisch nächste Datensatz wird angezeigt" PRINT PRINT "<-> - Der numerisch letzte Datensatz wird angezeigt" PRINT PRINT " - Sie werden nach der Nummer des gewünschten PRINT " Datensatzes gefragt" PRINT PRINT " - Geben Sie die Nummer des Feldes und dann den" PRINT " Suchbegriff an. MaxiDAT sucht vom momentanen" PRINT " Datensatz bis zum Schluß." PRINT PRINT " - Sie können die Daten des aktuellen Satzes edi-" PRINT " tieren." PRINT PRINT " - Der Inhalt des aktuellen Datensatzes wird gelöscht." PRINT PRINT " - Der aktuelle Datensatz wird ausgedruckt." PRINT PRINT " - Sie verlassen diesen Programmteil und kommen zurück" PRINT " zum Hauptmenü." PRINT PRINT "- Diese Seite" PRINT PRINT PRINT "--- Beliebige Taste ---" SLEEP SLEEP END IF IF Co$="S" THEN LOCATE 25,1 INPUT "In welchem Feld ";Sfeld LINE INPUT "Nach welchem Begriff ";Such$ FOR I=Satz TO Msatz GET #1,I IF INSTR(In$(Sfeld),Such$) THEN Satz=I I=Msatz+1 END IF NEXT I END IF IF Co$="+" THEN IF Satz1 THEN Satz=Satz-1 ELSE BEEP END IF END IF IF Co$="G" THEN LOCATE 24,1 INPUT "Welche Satznummer (* - letzte Nummer) ";N$ IF N$="*" THEN Satz=Msatz ELSE Satz=ABS(INT(VAL(N$))) IF Satz=0 THEN Satz=1 BEEP END IF IF Satz>Msatz THEN Satz=Msatz BEEP END IF END IF END IF IF Co$="L" THEN FOR I=1 TO 11 LSET In$(I)="" NEXT I PUT #1,Satz END IF IF Co$="D" THEN FOR I=1 TO Anzmsk LPRINT Bezeichnung$(I);" : ";In$(I) NEXT I LPRINT LPRINT END IF IF Co$="E" THEN FOR I=1 TO 11 Ein$(I)=In$(I) NEXT I GOSUB Eing FOR I=1 TO 11 LSET In$(I)=Ein$(I) NEXT I PUT #1,Satz END IF WEND Co$="" CLOSE #1 RETURN Loeschen: req$(1)="Beim Weitermachen werden" req$(2)="alle Daten aus dem Speicher" req$(3)="gelöscht !!!" req$(4)="Wirklich weitermachen ???" REQUESTER 50,50,4,req$()," Ja "," Nein ",req IF req=1 THEN RUN END IF WINDOW OUTPUT 2 RETURN Ende: req$(1)="Wollen Sie das Programm" req$(2)=" wirklich beenden ?" REQUESTER 50,50,2,req$()," Ja "," Nein ",req IF req=1 THEN WINDOW CLOSE 2 SCREEN CLOSE 1 SYSTEM END IF WINDOW OUTPUT 2 RETURN DruckeAlles: CLS LINE INPUT "Dateiname ohne Pfadangabe -> ";Dnam$ Datnam$=Drive$+Pfad$+Dnam$+".DATEN" Datinfnam$=Drive$+Pfad$+Dnam$+".INFOS" GOSUB LeseInfos LPRINT "Dateiname :";Dnam$ LPRINT "Anzahl Datensätze :";Satznummer-1 LPRINT "Ausgedruckt am :"; DATUM dtm$ LPRINT dtm$ LPRINT "Uhrzeit :";TIME$ LPRINT LPRINT CLS OPEN "r",#1,Datnam$,550 FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11) PRINT "Daten ausdrucken..." PRINT "Aktueller Datensatz : " FOR I=1 TO Satznummer-1 LOCATE 5,5 PRINT I GET #1,I FOR Ii=1 TO Anzmsk LPRINT Bezeichnung$(Ii);" : "; LPRINT In$(Ii) NEXT Ii LPRINT NEXT I CLOSE #1 LPRINT LPRINT LPRINT "--- Ende der Datei ---" LPRINT LPRINT LPRINT RETURN DruckeAllesOHNE: CLS LINE INPUT "Dateiname ohne Pfadangabe -> ";Dnam$ Datnam$=Drive$+Pfad$+Dnam$+".DATEN" Datinfnam$=Drive$+Pfad$+Dnam$+".INFOS" GOSUB LeseInfos OPEN "r",#1,Datnam$,550 FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11) PRINT "Daten ausdrucken..." PRINT "Aktueller Datensatz : " FOR I=1 TO Satznummer-1 LOCATE 5,5 PRINT I GET #1,I FOR Ii=1 TO Anzmsk LPRINT In$(Ii) NEXT Ii LPRINT NEXT I CLOSE #1 LPRINT LPRINT RETURN DruckeAuswahl: CLS LINE INPUT "Dateiname ohne Pfadangabe -> ";Dnam$ INPUT "Satznummer ";Satz Datnam$=Drive$+Pfad$+Dnam$+".DATEN" Datinfnam$=Drive$+Pfad$+Dnam$+".INFOS" GOSUB LeseInfos LPRINT "Dateiname :";Datnam$ LPRINT "Satznummer ;";Satz LPRINT OPEN "r",#1,Datnam$,550 FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11) GET #1,Satz FOR I=1 TO Anzmsk LPRINT Bezeichnung$(I);" : "; LPRINT In$(I) NEXT I CLOSE #1 LPRINT LPRINT RETURN ChangeDir: WINDOW 5,"Bitte Pfadnamen eingeben : ",(1,20)-(400,30),16,1 LINE INPUT Pfad$ WINDOW CLOSE 5 WINDOW OUTPUT 2 IF Pfad$<>"" THEN l=LEN(Pfad$) IF MID$(Pfad$,l,1)<>"/" THEN Pfad$=Pfad$+"/" l=l+1 END IF IF MID$(Pfad$,1,1)=":" THEN Pfad$=MID$(Pfad$,2,l-1) END IF IF MID$(Pfad$,4,1)=":" THEN Drive$=MID$(Pfad$,1,4) Pfad$=MID$(Pfad$,5,l-4) END IF ELSE Pfad$="MaxiDAT/Daten/" END IF RETURN ChangeDrive: req$(1)="Welches Laufwerk ?" REQUESTER 60,60,1,req$(),"DF0:","DF1:",Lw IF Lw=1 THEN Drive$="DF0:" ELSE Drive$="DF1:" END IF WINDOW OUTPUT 2 RETURN ZeigeDir: WINDOW 6,"DIRECTORY VON DRIVE "+Drive$+", DIRECTORY "+Pfad$,,0,1 Inhalt$=Drive$+MID$(Pfad$,1,LEN(Pfad$)-1) FILES Inhalt$ PRINT PRINT "-- Taste drücken --" SLEEP SLEEP WINDOW CLOSE 6 WINDOW OUTPUT 2 RETURN DeleteFile: LINE INPUT "Name (ohne Pfad- u. Laufwerksangabe) ";Dnam$ Dnam$=Drive$+Pfad$+Dnam$ req$(1)="Soll das File" req$(2)=Dnam$ req$(3)="wirklich gelöscht werden ?" REQUESTER 20,20,3,req$()," JA "," NEIN ",req WINDOW OUTPUT 2 IF req=1 THEN KILL Dnam$ END IF RETURN GrafikdateiAnlegen: CLS PRINT "Datei anlegen..." LINE INPUT "Name (ohne Pfad- u. Laufwerksangabe) ";Nam$ Datinfnam$=Drive$+Pfad$+Nam$+".INFOS" OPEN Datinfnam$ FOR OUTPUT AS #2 WRITE #2,11 WRITE #2,2 WRITE #2,1 WRITE #2,"Bezeichnung" WRITE #2,5 WRITE #2,"Wert" WRITE #2,5 CLOSE #2 RETURN Zeichnen: CLS M=0 PRINT "Balkengrafik zeichnen" LINE INPUT "Dateiname ? ";Nam$ Datnam$=Drive$+Pfad$+Nam$+".DATEN" Datinfnam$=Drive$+Pfad$+Nam$+".INFOS" GOSUB LeseInfos CLS IF gr THEN ERASE B$ ERASE W END IF gr=1 INPUT "Höchster y-Wert ";M CLS DIM B$(Satznummer),W(Satznummer) OPEN "R",#1,Datnam$,550 FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11) FOR I=1 TO Satznummer-1 GET #1,I B$(I)=In$(1) W(I)=VAL(In$(2)) NEXT I LOCATE 1,1 PRINT M LOCATE 16,1 PRINT M/2 ScaleY=350/M ScaleX=INT(550/(Satznummer-1)) COLOR 3 FOR I=1 TO 640 STEP 10 LINE (I,0)-(I,400) NEXT I FOR I=1 TO 400 STEP 10 LINE (0,I)-(640,I) NEXT I FOR I=1 TO Satznummer-1 COLOR 1 LINE ((I*ScaleX)+3,300-W(I)*ScaleY)-(((I+1)*ScaleX)-3,350),,bf COLOR 2,1 LOCATE 31,3+INT((I*ScaleX)/8) PRINT B$(I); NEXT I COLOR 1,0 CLOSE #1 WHILE INKEY$="" WEND CLS RETURN ProgrammInfo: CLS PRINT "MaxiDAT - AMIGA" PRINT "---------------" PRINT PRINT "Version 2.02, geschrieben März 1989 von Christoph Hust" PRINT PRINT "Änderung zu Version 2.01:" PRINT "Grafikeinbindung" PRINT PRINT PRINT "Wenn ihnen das Programm gefällt, bitte senden sie ungefähr 20 DM an" PRINT "folgende Adresse:" PRINT PRINT " CHRISTOPH HUST" PRINT " MAINZER STRASSE 30" PRINT " D-5407 BOPPARD 1" PRINT PRINT "MAXIDAT IST EIN PUBLIC DOMAIN PROGRAMM. ES DARF FREI KOPIERT WERDEN." PRINT PRINT PRINT "----- taste drücken ----- taste drücken ----- taste drücken -----" SLEEP SLEEP RETURN REM ****************************************************************** REM *** Hier stehen die Unterprogramme, die von mehreren Programm- *** REM *** funktionen aus aufgerufen werden *** REM ****************************************************************** Eing: WHILE Jn$<>"J" CLS PRINT "Daten eingeben. Satznummer:";Satz PRINT FOR I=1 TO Anzmsk COLOR 3 PRINT Bezeichnung$(I);":" COLOR 2 LOCATE I+2,Maxbezlaenge+4 PRINT Ein$(I) NEXT I COLOR 1 FOR I=1 TO Anzmsk LOCATE I+2,Maxbezlaenge+4 LINE INPUT Eing$ IF Eing$<>"" THEN Ein$(I)=Eing$ END IF NEXT I LOCATE 20,1 Jn$="" INPUT "Eingaben OK ";Jn$ Jn$=LEFT$(UCASE$(Jn$),1) WEND Jn$="" RETURN LeseInfos: OPEN Datinfnam$ FOR INPUT AS #2 INPUT #2,Maxbezlaenge INPUT #2,Anzmsk INPUT #2,Satznummer FOR I=1 TO Anzmsk LINE INPUT #2,Bezeichnung$(I) Bezeichnung$(I)=MID$(Bezeichnung$(I),2,LEN(Bezeichnung$(I))-2) INPUT #2,Laenge(I) NEXT I CLOSE #2 RETURN REM ****************************************************************** REM *** Hier sind einige neue BASIC-"Befehle", die auch in eigenen *** REM *** Programmen untergebracht werden können *** REM ****************************************************************** SUB REQUESTER (Posx,Posy,Anztxt,txt$(),Txt1$,Txt2$,req) STATIC dummy=MOUSE(0) FOR I=1 TO Anztxt IF LEN(txt$(I))>Mlaenge THEN Mlaenge=LEN(txt$(I)) NEXT I Titel$="Achtung !!"+SPACE$(Mlaenge) WINDOW 5,Titel$,(Posx,Posy)-((Posx+(8*Mlaenge))+40,(Posy+(8*Anztxt))+20),18,1 FOR I=1 TO Anztxt PRINT " "+txt$(I) NEXT I T1=Mlaenge\4-LEN(Txt1$)\2 LOCATE Anztxt+2,T1 PRINT Txt1$; T2=Mlaenge-LEN(Txt2$)\2 LOCATE Anztxt+2,T2 PRINT Txt2$; x1=((T1-1)*8)-5 y1=((Anztxt+2)*8)+1 x2=(x1+(8*LEN(Txt1$)))+5 y2=((Anztxt+1)*8)-4 LINE (x1,y1)-(x2,y2),,B x3=((T2-1)*8)-5 y3=((Anztxt+2)*8)+1 x4=(x3+(8*LEN(Txt2$)))+5 y4=((Anztxt+1)*8)-4 LINE (x3,y3)-(x4,y4),,B x=0:y=0 WHILE NOT((x>x1 AND xy2) OR (x>x3 AND xy4)) WINDOW OUTPUT 1 IF MOUSE(0)<>0 THEN x=MOUSE(3) y=MOUSE(4) END IF WEND IF (x>x1 AND x